package org.lee;

import org.apache.poi.xwpf.usermodel.*;
import org.lee.util.Pdf2Doc;

import java.io.FileOutputStream;

/**
 * @author jackielee
 * @version 1.0
 * @description App
 * @date 2021/6/2
 */
public class App {
  public static void main(String[] args) {
    String pdfFile =
        "C:\\Users\\Jackie\\Downloads\\dd\\all2Html\\Linux就该这么学.pdf"; // "C:\\Users\\Jackie\\Downloads\\dd\\DevOps流程建设图.pdf";
    String htmlFile = "C:\\Users\\Jackie\\Downloads\\dd\\pdf";
    Pdf2Doc.pdf2Word(pdfFile, htmlFile);
  }

  public static void main2(String[] args) throws Exception {
    try (XWPFDocument doc = new XWPFDocument()) {

      XWPFParagraph p1 = doc.createParagraph();
      p1.setAlignment(ParagraphAlignment.CENTER);
      p1.setBorderBottom(Borders.DOUBLE);
      p1.setBorderTop(Borders.DOUBLE);

      p1.setBorderRight(Borders.DOUBLE);
      p1.setBorderLeft(Borders.DOUBLE);
      p1.setBorderBetween(Borders.SINGLE);

      p1.setVerticalAlignment(TextAlignment.TOP);

      XWPFRun r1 = p1.createRun();
      r1.setBold(true);
      r1.setText("The quick brown fox");
      r1.setBold(true);
      r1.setFontFamily("Courier");
      r1.setUnderline(UnderlinePatterns.DOT_DOT_DASH);
      r1.setTextPosition(100);

      XWPFParagraph p2 = doc.createParagraph();
      p2.setAlignment(ParagraphAlignment.RIGHT);

      // BORDERS
      p2.setBorderBottom(Borders.DOUBLE);
      p2.setBorderTop(Borders.DOUBLE);
      p2.setBorderRight(Borders.DOUBLE);
      p2.setBorderLeft(Borders.DOUBLE);
      p2.setBorderBetween(Borders.SINGLE);

      XWPFRun r2 = p2.createRun();
      r2.setText("jumped over the lazy dog");
      r2.setStrikeThrough(true);
      r2.setFontSize(20);

      XWPFRun r3 = p2.createRun();
      r3.setText("and went away");
      r3.setStrikeThrough(true);
      r3.setFontSize(20);
      r3.setSubscript(VerticalAlign.SUPERSCRIPT);

      // hyperlink
      XWPFHyperlinkRun hyperlink = p2.insertNewHyperlinkRun(0, "http://poi.apache.org/");
      hyperlink.setUnderline(UnderlinePatterns.SINGLE);
      hyperlink.setColor("0000ff");
      hyperlink.setText("Apache POI");

      XWPFParagraph p3 = doc.createParagraph();
      p3.setWordWrapped(true);
      p3.setPageBreak(true);

      // p3.setAlignment(ParagraphAlignment.DISTRIBUTE);
      p3.setAlignment(ParagraphAlignment.BOTH);
      p3.setSpacingBetween(15, LineSpacingRule.EXACT);

      p3.setIndentationFirstLine(600);

      XWPFRun r4 = p3.createRun();
      r4.setTextPosition(20);
      r4.setText(
          "To be, or not to be: that is the question: "
              + "Whether 'tis nobler in the mind to suffer "
              + "The slings and arrows of outrageous fortune, "
              + "Or to take arms against a sea of troubles, "
              + "And by opposing end them? To die: to sleep; ");
      r4.addBreak(BreakType.PAGE);
      r4.setText(
          "No more; and by a sleep to say we end "
              + "The heart-ache and the thousand natural shocks "
              + "That flesh is heir to, 'tis a consummation "
              + "Devoutly to be wish'd. To die, to sleep; "
              + "To sleep: perchance to dream: ay, there's the rub; "
              + ".......");
      r4.setItalic(true);
      // This would imply that this break shall be treated as a simple line break, and break the
      // line after that word:

      XWPFRun r5 = p3.createRun();
      r5.setTextPosition(-10);
      r5.setText("For in that sleep of death what dreams may come");
      r5.addCarriageReturn();
      r5.setText(
          "When we have shuffled off this mortal coil, "
              + "Must give us pause: there's the respect "
              + "That makes calamity of so long life;");
      r5.addBreak();
      r5.setText(
          "For who would bear the whips and scorns of time, "
              + "The oppressor's wrong, the proud man's contumely,");

      r5.addBreak(BreakClear.ALL);
      r5.setText(
          "The pangs of despised love, the law's delay, "
              + "The insolence of office and the spurns "
              + ".......");

      try (FileOutputStream out = new FileOutputStream("simple.docx")) {
        doc.write(out);
      }
    }
  }
}
